package com.xiaohua.api.service;

import com.xiaohua.common.core.domain.AjaxResult;

/**
 * 证件识别服务接口
 *
 * @author 小花
 * @date 2025-03-29
 */
public interface IXhCertService {
    
    /**
     * 证件分类识别
     * 
     * @param imageBase64 图片的Base64编码
     * @return 分类结果
     */
    AjaxResult classifyCertificate(String imageBase64);
    
    /**
     * 根据URL进行证件分类识别
     * 
     * @param imageUrl 图片URL
     * @return 分类结果
     */
    AjaxResult classifyCertificateByUrl(String imageUrl);
    
    /**
     * 身份证识别
     * 
     * @param imageBase64 图片的Base64编码
     * @return 识别结果
     */
    AjaxResult recognizeIdCard(String imageBase64);
    
    /**
     * 根据URL进行身份证识别
     * 
     * @param imageUrl 图片URL
     * @return 识别结果
     */
    AjaxResult recognizeIdCardByUrl(String imageUrl);
    
    /**
     * 营业执照识别
     * 
     * @param imageBase64 图片的Base64编码
     * @return 识别结果
     */
    AjaxResult recognizeBusinessLicense(String imageBase64);
    
    /**
     * 根据URL进行营业执照识别
     * 
     * @param imageUrl 图片URL
     * @return 识别结果
     */
    AjaxResult recognizeBusinessLicenseByUrl(String imageUrl);
    
    /**
     * 行驶证识别
     * 
     * @param imageBase64 图片的Base64编码
     * @return 识别结果
     */
    AjaxResult recognizeVehicleLicense(String imageBase64);
    
    /**
     * 根据URL进行行驶证识别
     * 
     * @param imageUrl 图片URL
     * @return 识别结果
     */
    AjaxResult recognizeVehicleLicenseByUrl(String imageUrl);
    
    /**
     * 驾驶证识别
     * 
     * @param imageBase64 图片的Base64编码
     * @return 识别结果
     */
    AjaxResult recognizeDriverLicense(String imageBase64);
    
    /**
     * 根据URL进行驾驶证识别
     * 
     * @param imageUrl 图片URL
     * @return 识别结果
     */
    AjaxResult recognizeDriverLicenseByUrl(String imageUrl);
    
    /**
     * 银行卡识别
     * 
     * @param imageBase64 图片的Base64编码
     * @return 识别结果
     */
    AjaxResult recognizeBankCard(String imageBase64);
    
    /**
     * 根据URL进行银行卡识别
     * 
     * @param imageUrl 图片URL
     * @return 识别结果
     */
    AjaxResult recognizeBankCardByUrl(String imageUrl);
    
    /**
     * 护照识别
     * 
     * @param imageBase64 图片的Base64编码
     * @return 识别结果
     */
    AjaxResult recognizePassport(String imageBase64);
    
    /**
     * 根据URL进行护照识别
     * 
     * @param imageUrl 图片URL
     * @return 识别结果
     */
    AjaxResult recognizePassportByUrl(String imageUrl);
    
    /**
     * 社保卡识别
     * 
     * @param imageBase64 图片的Base64编码
     * @return 识别结果
     */
    AjaxResult recognizeSocialSecurityCard(String imageBase64);
    
    /**
     * 根据URL进行社保卡识别
     * 
     * @param imageUrl 图片URL
     * @return 识别结果
     */
    AjaxResult recognizeSocialSecurityCardByUrl(String imageUrl);
    
    /**
     * 户口本识别
     * 
     * @param imageBase64 图片的Base64编码
     * @return 识别结果
     */
    AjaxResult recognizeHouseholdRegister(String imageBase64);
    
    /**
     * 根据URL进行户口本识别
     * 
     * @param imageUrl 图片URL
     * @return 识别结果
     */
    AjaxResult recognizeHouseholdRegisterByUrl(String imageUrl);
    
    /**
     * 结婚证识别（使用字节数组）
     * 
     * @param imageBytes 图片字节数组
     * @return 识别结果
     */
    AjaxResult recognizeMarriageCertificateWithBytes(byte[] imageBytes);
    
    /**
     * 结婚证识别
     * 
     * @param imageBase64 图片的Base64编码
     * @return 识别结果
     */
    AjaxResult recognizeMarriageCertificate(String imageBase64);
    
    /**
     * 根据URL进行结婚证识别
     * 
     * @param imageUrl 图片URL
     * @return 识别结果
     */
    AjaxResult recognizeMarriageCertificateByUrl(String imageUrl);
    
    /**
     * 房产证识别
     * 
     * @param imageBase64 图片的Base64编码
     * @return 识别结果
     */
    AjaxResult recognizePropertyCertificate(String imageBase64);
    
    /**
     * 根据URL进行房产证识别
     * 
     * @param imageUrl 图片URL
     * @return 识别结果
     */
    AjaxResult recognizePropertyCertificateByUrl(String imageUrl);
    
    /**
     * 出生证明识别
     * 
     * @param imageBase64 图片的Base64编码
     * @return 识别结果
     */
    AjaxResult recognizeBirthCertificate(String imageBase64);
    
    /**
     * 根据URL进行出生证明识别
     * 
     * @param imageUrl 图片URL
     * @return 识别结果
     */
    AjaxResult recognizeBirthCertificateByUrl(String imageUrl);
    
    /**
     * 学位证识别
     * 
     * @param imageBase64 图片的Base64编码
     * @return 识别结果
     */
    AjaxResult recognizeDegreeCertificate(String imageBase64);
    
    /**
     * 根据URL进行学位证识别
     * 
     * @param imageUrl 图片URL
     * @return 识别结果
     */
    AjaxResult recognizeDegreeCertificateByUrl(String imageUrl);
    
    /**
     * 毕业证识别
     * 
     * @param imageBase64 图片的Base64编码
     * @return 识别结果
     */
    AjaxResult recognizeGraduationCertificate(String imageBase64);
    
    /**
     * 根据URL进行毕业证识别
     * 
     * @param imageUrl 图片URL
     * @return 识别结果
     */
    AjaxResult recognizeGraduationCertificateByUrl(String imageUrl);
    
    /**
     * 统一证件识别接口
     * 
     * @param imageBase64 图片的Base64编码
     * @param certType 证件类型
     * @return 识别结果
     */
    AjaxResult recognizeCertificate(String imageBase64, String certType);
    
    /**
     * 根据URL进行统一证件识别
     * 
     * @param imageUrl 图片URL
     * @param certType 证件类型
     * @return 识别结果
     */
    AjaxResult recognizeCertificateByUrl(String imageUrl, String certType);
    
    /**
     * 统一证件识别接口（带截断标志）
     * 
     * @param imageBase64 图片的Base64编码
     * @param certType 证件类型
     * @param truncateForDoc 是否截断长文本适合文档展示
     * @return 识别结果
     */
    AjaxResult recognizeCertificate(String imageBase64, String certType, boolean truncateForDoc);
    
    /**
     * 根据URL进行统一证件识别（带截断标志）
     * 
     * @param imageUrl 图片URL
     * @param certType 证件类型
     * @param truncateForDoc 是否截断长文本适合文档展示
     * @return 识别结果
     */
    AjaxResult recognizeCertificateByUrl(String imageUrl, String certType, boolean truncateForDoc);
} 